package model

import (
	"database/sql"
	"fmt"
	"ginblog/utils"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	"time"
)

var db *gorm.DB
var err error
var sqlDb *sql.DB

func InitDb() {
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		utils.DbUser,
		utils.DbPassword,
		utils.DbHost,
		utils.DbPort,
		utils.DbName,
	)
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			SingularTable: true, // 使用单数表名
		},
	})
	if err != nil {
		fmt.Printf("连接数据库失败，请检查参数，", err)
	}

	db.AutoMigrate(&User{}, &Article{}, &Category{})

	sqlDb, err = db.DB()
	// 设置连接池中的最大闲置连接数
	sqlDb.SetMaxIdleConns(10)
	// 设置数据库的最大连接数量
	sqlDb.SetMaxOpenConns(100)
	// 设置连接的最大可复用时间
	sqlDb.SetConnMaxLifetime(10 * time.Second)

}
